package com.sunyur.tailor.channel.service.inner.order.param;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description 创建订单参数
 * @Author XuHui
 * @Date 2021/12/30 17:49
 * @Version 1.0
 */
@Data
public class CreateOrderParam {
    /**
     * 外部订单编号
     */
    private String purOrderCode;
    /**
     * 业务来源(0:请购 3:外部)
     */
    private Integer sourceType;
    /**
     * 发票类型{0:普通发票,1:增值发票}
     */
    private Integer invoiceType;
    /**
     * 原币币种
     */
    private String currency;
    /**
     * 采购员编号
     */
    private String agentCode;
    /**
     * 合同编号
     */
    private String contractCode;
    /**
     * 创建人编号
     */
    private String creatorCode;
    /**
     * 运费物料编号
     */
    private String freightMaterielCode;
    /**
     * 运费
     */
    private BigDecimal freightPrice;
    /**
     * 运费税率
     */
    private BigDecimal freightRate;
    /**
     * 协议编号
     */
    private String protocolCode;
    /**
     * 订单创建后状态{1:待提交,3:新建}
     */
    private String createStatus;
    /**
     * 采购组外部编码
     */
    private String purchaseGroupCode;
    /**
     * 付款类型1:银行转账 2:电汇
     */
    private String payTypeCode;
    /**
     * 备注
     */
    private String remark;
    /**
     * 结算主体编号
     */
    private String settleCompanyCode;
    /**
     * 供应商编号
     */
    private String supplierCode;
    /**
     * 付款条款
     */
    private PaymentTerm paymentTerm;
    /**
     * 订单明细
     */
    private List<Items> items;
    /**
     * 附件
     */
    private List<String> accessories;

    /**
     * @Description 创建订单的行参数
     * @Author XuHui
     * @Date 2021/12/30 17:50
     * @Version 1.0
     */
    @Data
    public class Items {
        /**
         * 核算成本中心编码
         */
        private String settleGroupCode;

        /**
         * 核算成本中心外部名称
         */
        private String settleGroupPurName;

        /**
         * 核算成本中心外部编码
         */
        private String settleGroupPurCode;
        /**
         * 费用类型外部编码
         */
        private String expenseTypePurCode;
        /**
         * 物资属性名称
         */
        private String materielAttrName;
        /**
         * 业务单元外部Code
         */
        private String businessUnitPurCode;

        /**
         * 业务单元名称
         */
        private String businessUnitName;
        /**
         * 库存组织外部编号
         */
        private String stockOrganizationPurCode;
        /**
         * 库存组织名称
         */
        private String stockOrganizationName;
        /**
         * 库存地点名称
         */
        private String stockSiteName;
        /**
         * 库存地点外部编号
         */
        private String stockSitePurCode;
        /**
         * PR单号
         */
        private String applyCode;

        /**
         * PR单行号
         */
        private String applyItemCode;

        /**
         * 来源单号（申请单号，寻源单号）
         */
        private String sourceCode;

        /**
         * 来源行号（申请单号，寻源单号）
         */
        private String sourceItemCode;
        /**
         * 使用人部门外部编码
         */
        private String userOrgPurCode;

        /**
         * 使用人编码
         */
        private String userCode;
        /**
         * 购买人部门外部编号
         */
        private String buyerOrgPurCode;

        /**
         * 购买人编号
         */
        private String buyerCode;
        /**
         * 外部订单行编号
         */
        private String purOrderItemCode;
        /**
         * 类型{1:物料4:自定义}
         */
        private Integer type;
        /**
         * 标的物编号
         */
        private String goodsCode;
        /**
         * 数量
         */
        private BigDecimal number;
        /**
         * 加放量
         */
        private BigDecimal addQuantity;
        /**
         * 交货周期（天）
         */
        private Integer arrivePeriod;
        /**
         * 截止交货时间
         */
        private Long finalArriveTime;
        /**
         * 扩展字段
         */
        private Map extend;
        /**
         * 行类型外部编码
         */
        private String itemTypePurCode;
        /**
         * 允差
         */
        private BigDecimal  tolerance;
        /**
         * 超量收货控制
         */
        private Integer receiveControlType;
        /**
         * 多步收货类型
         */
        private Integer multiRecvType;
        /**
         * 预算信息
         */
       private Budget budget;
        /**
         * 附件
         */
        private List<String> accessories;

        /**
         *
         */
        private String beneficiaryCode;
        /**
         *
         */
        private String businessUnitCode;
        /**
         *
         */
        private BigDecimal count;
        /**
         *
         */
        private Long expectedArriveTime;
        /**
         *
         */
        private String expenseTypeCode;
        /**
         *
         */
        private String protocolItemCode;
        /**
         * 备注
         */
        private String remark;
        /**
         * 不含税单价
         */
        private BigDecimal taxExcludedPrice;
        /**
         * 含税单价
         */
        private BigDecimal taxIncludedPrice;
        /**
         * 税率
         */
        private BigDecimal taxRate;
        /**
         * 税率编号
         */
        private String taxCode;
        /**
         *
         */
        private String unitCode;
        /**
         *
         */
        private String userOrgCode;
        /**
         * 收票地址（包含收货人，电话，地址）
         */
        private InvoiceReceiveAddress invoiceReceiveAddress;
        /**
         * 收票人编号
         */
        private String invoiceReceiverCode;
        /**
         * 收货地址（包含收货人，电话，地址）
         */
        private ReceiveAddress receiveAddress;
        /**
         * 收货人编号
         */
        private String receiverCode;

    }
}
